package issr.market.controller;

import issr.market.db.DBController;
import issr.market.db.impl.DBControllerImpl;
import issr.market.model.Lotto;
import issr.market.services.GestioneProdottiService;
import issr.market.utils.Constants;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

public class MagazziniereController extends AbstractController {
	
	
	public static final String LOTTI_APPROVAZIONE = "approvazione";
	public static final String LOTTI_SCADUTI = "scaduti";
	
	private static final String AGGIUNGI_LOTTI = "addProdotti";
	private static final String ELIMINA_LOTTI = "cancellaProdotti";
	private static final String CONFERMA_LOTTI = "approvaProdotti";
	
	
	private static final long serialVersionUID = 6099782011988611816L;
	
	private Logger logger = Logger.getLogger(MagazziniereController.class);
	
	private List<Lotto> lottiApprovazione; 
	private List<Lotto> lottiScaduti;
	
	private String nomeProdotto;
	private String codiceProdotto;
	private String codiceLotto;
	private String qProdotto;
	private String dataConsegna;
	private String dataScadenza;
	private String prezzo;
	
	private String[] idLotti;
	
	
	@Override
	public String execute() {
	
		if(accessForbidden())
			return "login";
		
		
		
		lottiApprovazione = new ArrayList<Lotto>();
		lottiScaduti = new ArrayList<Lotto>();
		
		if(getActionToDo()!=null && getActionToDo().equals(AGGIUNGI_LOTTI))
			GestioneProdottiService.depositoProdotti(codiceLotto, codiceProdotto, dataConsegna, dataScadenza, qProdotto);
		
		else if(getActionToDo()!=null && getActionToDo().equals(CONFERMA_LOTTI))
			GestioneProdottiService.approvaProdotti();
		
		else if(getActionToDo()!=null && getActionToDo().equals(ELIMINA_LOTTI))
			GestioneProdottiService.eliminaLotti(idLotti);
		
		logger.info("Inizializzo View per Magazziniere");
		Map<String, List<Lotto>> lottiMap = initializeMagazziniereView();
		lottiApprovazione = lottiMap.get(LOTTI_APPROVAZIONE);
		lottiScaduti = lottiMap.get(LOTTI_SCADUTI);
			
		return "success";
	}
	
	public static Map<String, List<Lotto>> initializeMagazziniereView(){
		Map<String, List<Lotto>> lottiMap = new HashMap<String, List<Lotto>>();
		DBController dbController = new DBControllerImpl();
		
		lottiMap.put(LOTTI_APPROVAZIONE, dbController.getLottiByStato(Constants.LOTTO_INSERITO));
		lottiMap.put(LOTTI_SCADUTI, dbController.getLottiByStato(Constants.LOTTO_SCADUTO));
		
		return lottiMap;
	}

		
	public List<Lotto> getLottiApprovazione(){
		return lottiApprovazione;	
	}	
	
	public List<Lotto> getLottiScaduti(){
		return lottiScaduti;
	}

	public String getNomeProdotto() {
		return nomeProdotto;
	}

	public void setNomeProdotto(String nomeProdotto) {
		this.nomeProdotto = nomeProdotto;
	}

	public String getCodiceProdotto() {
		return codiceProdotto;
	}

	public void setCodiceProdotto(String codiceProdotto) {
		this.codiceProdotto = codiceProdotto;
	}

	public String getCodiceLotto() {
		return codiceLotto;
	}

	public void setCodiceLotto(String codiceLotto) {
		this.codiceLotto = codiceLotto;
	}

	public String getQProdotto() {
		return qProdotto;
	}

	public void setQProdotto(String qProdotto) {
		this.qProdotto = qProdotto;
	}

	public String getDataConsegna() {
		return dataConsegna;
	}

	public void setDataConsegna(String dataConsegna) {
		this.dataConsegna = dataConsegna;
	}

	public String getDataScadenza() {
		return dataScadenza;
	}

	public void setDataScadenza(String dataScadenza) {
		this.dataScadenza = dataScadenza;
	}

	public String getPrezzo() {
		return prezzo;
	}

	public void setPrezzo(String prezzo) {
		this.prezzo = prezzo;
	}

	public String[] getIdLotti() {
		return idLotti;
	}

	public void setIdLotti(String[] idLotti) {
		this.idLotti = idLotti;
	}	
	

}
